/**
 * Copyright c FOUNDER 2005 All Rights Reserved.
 * SqlFileLoader.java
 */
package com.iori.common.db.dbctrl;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.ResourceBundle;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;

/**
 * [クラス名]<br>
 *  SQLファイルローダー<br><br>
 * [機能概要]<br>
 *  XMLフォーマットのSQLファイルを読み込む。<br><br>
 * [変更履歴]<br>
 *  2005/02/12 ver1.00 新規作成 zhanjc<br>
 *  <br>
 *
 * @author zhanjc
 * @version 1.00
 */
public class SqlFileLoader extends HashMap {
	/**
	 * ログ出力用のインスタンス生成�.
	 */
	protected static Log logger = LogFactory.getLog(SqlFileLoader.class);
	private final static String CONFIGFILE_NAME = "xmlparser";
	private static String XMLPARSER = null;
	static {
		try {
			ResourceBundle config = ResourceBundle.getBundle(CONFIGFILE_NAME);
			XMLPARSER = config.getString("parsername");
		} catch (Exception ex) {
			logger.error(ex.getMessage());
		}
	}

    /**
     * 与えられたInputStreamからXMLフォーマットのSQL文をロードする。
     *
     * @param iStream XMLファイルのインプットストリーム
     *
     * @exception SAXException SAX例外
     */
    public void load(InputStream iStream) throws IOException, SAXException {

        // InputStreamのチェック
        if (iStream == null) {
            return;
        }

        XMLReader reader = XMLReaderFactory.createXMLReader(XMLPARSER);

        // 自らをsqlIdとSQL文の格納先に指定
        DefaultHandler handler = new DataProcessor(this);

        // コンテントハンドラーもエラーハンドラーもDataProcessorクラスを使用
        reader.setContentHandler(handler);
        reader.setErrorHandler(handler);

        InputSource source = new InputSource(iStream);
        reader.parse(source);
    }
}
